// zhishi.js
// 获取app实例
const app = getApp();

Page({
  data: {
    list: [1, 2, 3, 3, 3, 3, 3],
    totalHeaderHeightall: "",
    // 用户信息
    isLoggedIn: false,
    navs: [], // 用户选取的科目列表\
    showmsg: false,
    massges: "",
    currentNav: 0, // 当前选中的导航索引
    topics: [], // 当前科目的知识点标题列表
    questions: [] // 存储完整的知识点对象，包含id等信息
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 先检查用户登录状态，获取用户学校信息
    this.checkLoginStatus();
    this.setData({
      totalHeaderHeightall: app.globalData?.totalHeaderHeight
    });
    // 打印全局头部高度变量，方便调试
    console.log('全局头部总高度:', app.globalData?.totalHeaderHeight);

    // 直接从接口获取用户科目数据
    this.loadUserSubjects();
  },

  /**
   * 检查用户登录状态
   */
  checkLoginStatus: function () {
    // 从缓存中获取token
    const token = wx.getStorageSync('userToken');

    if (token) {
      // 有token时，从接口获取最新的用户信息
      const that = this;
      app.api.getUserInfo().then(res => {
        console.log('获取用户信息成功:', res);

        // 检查响应数据
        if (res && res.code === 200 && res.data) {
          // 更新用户信息到缓存（可选，用于页面刷新时快速显示）
          wx.setStorageSync('userInfo', res.data);

          that.setData({
            isLoggedIn: true,
            userInfo: res.data
          });
        } else {
          // 接口返回错误，清除token和用户信息
          wx.removeStorageSync('userToken');
          wx.removeStorageSync('userInfo');
          that.setData({
            isLoggedIn: false,
          });
        }
      }).catch(err => {
        console.error('获取用户信息失败:', err);
        // 网络错误，尝试使用缓存的用户信息（如果有）
        const cachedUserInfo = wx.getStorageSync('userInfo');
        if (cachedUserInfo) {
          that.setData({
            isLoggedIn: true,
            userInfo: cachedUserInfo
          });
        } else {
          that.setData({
            isLoggedIn: false,
            userInfo: null
          });
        }
      });
    } else {
      // 没有token，清除缓存的用户信息
      wx.removeStorageSync('userInfo');
      this.setData({
        isLoggedIn: false,
        userInfo: null,
        userSchoolId: 0,
        userSchoolName: '中南大学'
      });
    }
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    // 重置页面数据
    this.setData({
      knowledgeList: [],
      totalKnowledgePoints: 0
    });

    // 重新加载知识点列表
    this.loadKnowledgePointList();

    // 停止下拉刷新
    wx.stopPullDownRefresh();
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    // 知识点列表不需要分页加载，直接显示所有数据
    wx.showToast({
      title: '已显示所有知识点',
      icon: 'none'
    });
  },

  /**
   * 从数据库加载用户科目（知识点专用接口）
   */
  loadUserSubjects: function () {
    app.api.getUserKnowledgeSubjects().then(res => {
      console.log('从数据库获取用户知识点科目:', res);
      if (res.data && Array.isArray(res.data)) {
        this.setData({
          navs: res.data
        });
        // 默认加载第一个科目的题目
        if (res.data.length > 0) {
          this.loadTopicsBySubject(res.data[0].id);
        }
      }
    }).catch(err => {
      console.error('获取用户知识点科目失败:', err);
    });
  },

  /**
   * 根据科目ID加载知识点列表
   */
  loadTopicsBySubject: function (subjectId) {
    console.log('加载科目ID:', subjectId, '的知识点列表');

    // 显示加载提示
    // wx.showLoading({
    //   title: '加载知识点列表中...',
    //   mask: true
    // });

    // 调用API获取知识点列表
    app.api.getKnowledgePointList({ subjectId: subjectId }).then(res => {
      console.log('获取知识点列表响应:', res);

      // 关闭加载提示
      wx.hideLoading();

      // 检查响应状态
      if (res && res.code === 200 && res.data && Array.isArray(res.data)) {
        // 保存完整的知识点对象列表
        this.setData({
          questions: res.data,
          // 提取知识点标题到topics数组用于显示
          topics: res.data.map(knowledge => knowledge.title || '未命名知识点')
        });

        // 如果知识点列表为空，显示提示
        if (res.data.length === 0) {
          // wx.showToast({
          //   title: '当前科目暂无知识点',
          //   icon: 'none'
          // });
          this.setData({
            showmsg: true,
            massges: "当前科目暂无知识点",
          });
          setTimeout(() => {
            this.setData({
              showmsg: false,
              massges: "",
            });
          }, 1000);
        }
      } else {
        // 响应异常或没有数据
        this.setData({
          questions: [],
          topics: []
        });

        // 显示错误信息
        wx.showToast({
          title: res?.message || '获取知识点列表失败',
          icon: 'none'
        });
      }
    }).catch(err => {
      // 关闭加载提示
      wx.hideLoading();

      console.error('获取知识点列表API调用异常:', err);
      // 出错时设置为空数组
      this.setData({
        questions: [],
        topics: []
      });
      // 显示错误提示
      wx.showToast({
        title: '网络异常，请检查网络连接后重试',
        icon: 'none'
      });
    });
  },

  /**
   * 切换导航选中状态
   */
  selectNav: function (e) {
    const index = e.currentTarget.dataset.index;
    const subjectId = this.data.navs[index]?.id;

    this.setData({
      currentNav: index
    });

    // 加载选中科目的题目列表
    if (subjectId) {
      this.loadTopicsBySubject(subjectId);
    }
  },

  // 点击知识点跳转到详情页面
  onKnowledgeTap: function (e) {
    const index = e.currentTarget.dataset.index;
    const knowledge = this.data.questions[index];
    // console.log('点击知识点:', knowledge);
    // let fileUrl = "https://api.jingyizhiyuan.cn//storage/uploads/diagnosis_basic.docx"
    // uni.navigateTo({
    //   url: `/pages/webview/webview?url=${encodeURIComponent(fileUrl)}`
    // })
    // 跳转到知识点详情页面
    wx.navigateTo({
      url: `/pages/knowledge/detail?id=${knowledge.id}`
    });
  },

  // 点击科目区域跳转到知识点科目选择页面
  onTikuTap: function () {    // 检查用户是否已登录
    if (!this.data.isLoggedIn) {
      // 未登录则跳转到登录页面
      this.goToLogin();
      return;
    }

    wx.navigateTo({
      url: '/pages/knowledge-select/knowledge-select'
    });
  },
  // 点击收藏图标切换收藏状态
  onCollectTap: function (e) {

    const index = e.currentTarget.dataset.index;
    const knowledgeId = e.currentTarget.dataset.knowledgeId;
    const isFavorited = e.currentTarget.dataset.isFavorited;

    console.log('点击收藏按钮:', { index, knowledgeId, isFavorited });

    // 检查用户是否登录 - 从本地存储获取token
    const userToken = wx.getStorageSync('userToken');
    if (!userToken) {
      wx.showModal({
        title: '提示',
        content: '请先登录后再进行收藏操作',
        showCancel: false,
        success: function (res) {
          if (res.confirm) {
            wx.navigateTo({
              url: '/pages/login/login'
            });
          }
        }
      });
      return;
    }

    // 显示加载提示
    wx.showLoading({
      title: '操作中...',
      mask: true
    });

    // 调用收藏/取消收藏API
    app.api.toggleFavorite({
      knowledgePointId: knowledgeId,
      status: isFavorited ? 0 : 1
    }).then(res => {
      wx.hideLoading();

      if (res && res.code === 200) {
        // 更新本地数据
        const questions = this.data.questions;
        questions[index].is_favorited = res.data.is_favorited;
        questions[index].favorite_count = res.data.favorite_count;

        this.setData({
          questions: questions
        });

        // 显示操作成功提示
        wx.showToast({
          title: isFavorited ? '取消收藏成功' : '收藏成功',
          icon: 'success',
          duration: 1500
        });

        console.log('收藏状态更新成功:', res.data);
      } else {
        wx.showToast({
          title: res?.message || '操作失败',
          icon: 'none'
        });
      }
    }).catch(err => {
      wx.hideLoading();
      console.error('收藏操作失败:', err);
      wx.showToast({
        title: '网络异常，请重试',
        icon: 'none'
      });
    });
  },

  // 点击收藏区域跳转到收藏页面
  onCollectPageTap: function () {    // 检查用户是否已登录
    if (!this.data.isLoggedIn) {
      // 未登录则跳转到登录页面
      this.goToLogin();
      return;
    }

    wx.navigateTo({
      url: '/pages/collectpage/collectpage'
    });
  }
});
